package nuaa.dao;

import nuaa.domain.Administrator;
import nuaa.domain.OrdinaryUser;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface IUserDao {

    /**
     * 查看所有普通用户的信息
     * @return
     */
    @Select("select * from ordinaryuser")
    List<OrdinaryUser> findAll();

    /**
     * 根据用户的email查找到这个用户
     * @param email
     * @return
     */
    @Select("select * from ordinaryuser where email=#{email}")
    OrdinaryUser queryUserByEmail(String email);

    /**
     * 插入新的用户
     * @param ouser
     * 如果太长，那么用标签明显就不太方便了。可以考虑使用配置文件
     */
    @Insert("insert into ordinaryuser (email,password,username,sex,age) values" +
            "(#{email},#{password},#{username},#{sex},#{age})")
    void insertOUser(OrdinaryUser ouser);

    /**
     * 根据当前用户的Id获取用户的名字
     * @param userId
     * @return 用户姓名
     */
    @Select("select username from ordinaryuser where userId=#{userId}")
    String findUserNameByUserId(Integer userId);

    @Update("update ordinaryuser set username=#{username},sex=#{sex},age=#{age} where userId=#{userId}")
    void updateInfoByUser(OrdinaryUser user);

    @Update("update ordinaryuser set password=#{password} where userId=#{userId}")
    void updatePassword(@Param("password") String password, @Param("userId") Integer userId);

    /**
     * 根据管理员输入的邮箱获取记录
     * @param email
     * @return
     */
    @Select("select * from administer where email=#{email}")
    Administrator queryUserByEmailAdmin(String email);
}
